namespace CSharpPro._0930;

public class User
{
// 存储用户信息（用户名-密码），预设初始用户
        private static Dictionary<string, string> _users = new Dictionary<string, string>()
        {
            {"admin", "Admin123"},
            {"test", "Test456"}
        };

        // 显示主菜单
        public static void ShowMenu()
        {
            Console.WriteLine("\n===== 主菜单 =====");
            Console.WriteLine("1. 登录");
            Console.WriteLine("2. 注册");
            Console.WriteLine("3. 退出");
            Console.Write("请选择功能(1-3)：");
        }

        // 登录方法
        public static void Login()
        {
            Console.WriteLine("\n===== 用户登录 =====");
            Console.Write("请输入用户名：");
            string username = Console.ReadLine()?.Trim();
            Console.Write("请输入密码：");
            string password = Console.ReadLine()?.Trim();

            // 空值验证
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                Console.WriteLine("用户名或密码不可为空！");
                return;
            }

            // 验证用户
            if (!_users.ContainsKey(username))
            {
                Console.WriteLine("登录失败：用户名不存在");
            }
            else if (_users[username] != password)
            {
                Console.WriteLine("登录失败：密码错误");
            }
            else
            {
                Console.WriteLine($"登录成功！欢迎回来，{username}！");
                Console.WriteLine("===== 系统首页 ====="); // 模拟系统首页
            }
        }

        // 注册方法
        public static void Regist()
        {
            Console.WriteLine("\n===== 用户注册 =====");
            Console.Write("请设置用户名：");
            string username = Console.ReadLine()?.Trim();
            Console.Write("请设置密码：");
            string password = Console.ReadLine()?.Trim();
            Console.Write("请确认密码：");
            string confirmPwd = Console.ReadLine()?.Trim();

            // 空值验证
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(confirmPwd))
            {
                Console.WriteLine("输入不可为空！");
                return;
            }

            // 用户名验证
            if (username.Length < 3 || username.Length > 15)
            {
                Console.WriteLine("用户名长度必须为3-15个字符！");
                return;
            }
            if (!username.All(c => char.IsLetterOrDigit(c) || c == '_'))
            {
                Console.WriteLine("用户名只能包含字母、数字和下划线！");
                return;
            }
            if (_users.ContainsKey(username))
            {
                Console.WriteLine("用户名已存在！");
                return;
            }

            // 密码验证
            if (password.Length < 6 || password.Length > 20)
            {
                Console.WriteLine("密码长度必须为6-20个字符！");
                return;
            }
            if (!password.Any(char.IsUpper) || !password.Any(char.IsLower) || !password.Any(char.IsDigit))
            {
                Console.WriteLine("密码必须包含至少1个大写字母、1个小写字母和1个数字！");
                return;
            }
            if (password != confirmPwd)
            {
                Console.WriteLine("两次输入的密码不一致！");
                return;
            }

            // 注册成功
            _users.Add(username, password);
            Console.WriteLine("注册成功！已返回主菜单");
        }
}